g_slice_free1 (sizeof (GtkCssValue) + sizeof (GtkCssValue *) * (value->n_values - 1), value);
}
+static gboolean
+gtk_css_value_array_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ guint i;
+
+ if (value1->n_values != value2->n_values)
+ return FALSE;
+
+ for (i = 0; i < value1->n_values; i++)
+ {
+ if (!_gtk_css_value_equal (value1->values[i],
+ value2->values[i]))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
static void
gtk_css_value_array_print (const GtkCssValue *value,
GString *string)
static const GtkCssValueClass GTK_CSS_VALUE_ARRAY = {
gtk_css_value_array_free,
+ gtk_css_value_array_equal,
gtk_css_value_array_print
};
g_assert_not_reached ();
}
+static gboolean
+gtk_css_value_inherit_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ return TRUE;
+}
+
static void
gtk_css_value_inherit_print (const GtkCssValue *value,
GString *string)
static const GtkCssValueClass GTK_CSS_VALUE_INHERIT = {
gtk_css_value_inherit_free,
+ gtk_css_value_inherit_equal,
gtk_css_value_inherit_print
};
g_assert_not_reached ();
}
+static gboolean
+gtk_css_value_initial_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ return TRUE;
+}
+
static void
gtk_css_value_initial_print (const GtkCssValue *value,
GString *string)
static const GtkCssValueClass GTK_CSS_VALUE_INITIAL = {
gtk_css_value_initial_free,
+ gtk_css_value_initial_equal,
gtk_css_value_initial_print
};
GtkCssValue *value1,
GtkCssValue *value2)
{
- return FALSE;
+ return _gtk_css_value_equal (value1, value2);
}
static void
g_slice_free (GtkCssValue, value);
}
+static gboolean
+gtk_css_value_default_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ return FALSE;
+}
+
static void
gtk_css_value_default_print (const GtkCssValue *value,
GString *string)
static const GtkCssValueClass GTK_CSS_VALUE_DEFAULT = {
gtk_css_value_default_free,
+ gtk_css_value_default_equal,
gtk_css_value_default_print
};
value->class->free (value);
}
+gboolean
+_gtk_css_value_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ g_return_val_if_fail (value1 != NULL, FALSE);
+ g_return_val_if_fail (value2 != NULL, FALSE);
+
+ if (value1->class != value2->class)
+ return FALSE;
+
+ return value1->class->equal (value1, value2);
+}
+
void
_gtk_css_value_print (const GtkCssValue *value,
GString *string)
struct _GtkCssValueClass {
void (* free) (GtkCssValue *value);
+ gboolean (* equal) (const GtkCssValue *value1,
+ const GtkCssValue *value2);
void (* print) (const GtkCssValue *value,
GString *string);
};
GtkCssValue *_gtk_css_value_ref (GtkCssValue *value);
void _gtk_css_value_unref (GtkCssValue *value);
+gboolean _gtk_css_value_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2);
+
void _gtk_css_value_print (const GtkCssValue *value,
GString *string);